#!/usr/bin/env ruby
# frozen_string_literal: true

require 'optparse'

@sub_commands = {
  'tree-log' => '以树形结构打印提交日志',
  'migrate' => '将一个仓库完全迁移到另一个仓库的方法',
  'deep-status' => '递归显示当前目录下所有 git 环境的状态',
  'config-user' => '交互式地配置姓名和邮箱'
}

@help = <<~HELP
  Git 场景化工具，支持以下复杂场景的处理：

  #{
    @sub_commands.map do |cmd, message|
      "    gits #{cmd}\t\t # #{message}"
    end.join("\n")
  }

  '-h/--help' 选项打印本条帮助信息。
HELP

ARGV.push('--help') if ARGV.empty?
begin
  OptionParser.new do |opts|
    opts.banner = @help
  end.order!
rescue OptionParser::ParseError => ex
  STDERR.puts ex.message
  exit 1
end

command = ARGV.shift
if @sub_commands.key?(command)
  exec File.join(__dir__, 'lib/gits', command), *ARGV
else
  STDERR.puts "Invalid command: #{command}"
  exit 2
end
